home *** CD-ROM | disk | FTP | other *** search
- #include <WM.h>
- #include <MyStructs.h>
-
- USHORT SaveWin()
- {
- while(helpW)
- {
- if(WriteWin(helpW)) return(1);
- helpW=helpW->NextWindow;
- }
- return(0);
- }
- USHORT SaveData(UBYTE SArt)
- {
- UBYTE Mo[1];
- USHORT ERR;
- Datei=NULL;
- if(suffix==0)
- {
- suffix=1;
- Change=0;
- }
- strcpy(LEER,"WM-DATEN speichern !");
- if(SArt==1)
- {
- if(areq==NULL) strcpy(LEER,"WM-Window speichern !");
- else
- {
- if(areq->Type==0)
- strcpy(LEER,"Requester speichern !");
- if(areq->Type==1)
- strcpy(LEER,"AutoReq speichern !");
- if(areq->Type==2)
- strcpy(LEER,"Alert speichern !");
- }
- }
- ERR=FileRequester(LEER,78);
- if(ERR > 1) return(2);
- if(ERR==1)
- {
- Error(0,1,1);
- return(2);
- }
- Work();
- if(strlen(FileName) == 0) return(2);
- if( FileName[strlen(FileName)-3] != ZCode[6][0] &&
- FileName[strlen(FileName)-2] != ZCode[6][1] &&
- FileName[strlen(FileName)-1] != ZCode[6][2] )
- {
- strcat(FileName,ZCode[6]);
- strcat(Fname,ZCode[6]);
- }
- if(!(Datei=Open(FileName,MODE_NEWFILE))) return(1);
- if(write=Write(Datei,IDENT,sizeof(IDENT)) != sizeof(IDENT)) return(1);
- if(SArt==1)
- {
- Mo[0]='3';
- if(write=Write(Datei,Mo,sizeof(Mo)) != sizeof(Mo)) return(1);
- helpW=awin->NextWindow;
- FW=awin->Parent;
- awin->NextWindow=NULL;
- awin->Parent=NULL;
- err=WriteWin(awin);
- awin->NextWindow=helpW;
- awin->Parent=FW;
- if(err) return(1);
- }
- if(noscW != NULL && SArt==0)
- {
- Mo[0]='1';
- if(write=Write(Datei,Mo,sizeof(Mo)) != sizeof(Mo)) return(1);
- helpW=noscW;
- if(SaveWin()) return(1);
- }
- if(firstS != NULL && SArt==0)
- {
- Mo[0]='2';
- if(write=Write(Datei,Mo,sizeof(Mo)) != sizeof(Mo)) return(1);
- helpS=firstS;
- while(helpS)
- {
- if(write=Write(Datei,helpS,
- sizeof(struct MyScreen)) !=
- sizeof(struct MyScreen)) return(1);
- if(helpS->FirstWindow)
- {
- helpW=helpS->FirstWindow;
- if(SaveWin()) return(1);
- }
- helpS=helpS->NextScreen;
- }
- }
- Mo[0]='0';
- if(write=Write(Datei,Mo,sizeof(Mo)) != sizeof(Mo)) return(1);
- Change=0;
- Ready();
- return(0);
- }
- USHORT WriteWin(struct MyWindow *w)
- {
- if(write=Write(Datei,w,sizeof(struct MyWindow)) !=
- sizeof(struct MyWindow)) return(1);
- if(WrText(w->FirstText)) return(1);
- if(WrGadget(w->FirstGadget)) return(1);
- actM=w->MenuStrip;
- if(WrMenu()) return(1);
- if(w->CheckMark)
- {
- if(WrImage(w->CheckMark)) return(1);
- }
- areq=w->FirstRequest;
- if(areq)
- {
- if(write=Write(Datei,areq,sizeof(struct MyRequest)) !=
- sizeof(struct MyRequest)) return(1);
- if(WrBorder(areq->ReqBorder)) return(1);
- if(areq->ReqImage)
- {
- if(WrImage(areq->ReqImage)) return(1);
- }
- }
-
- return(0);
- }
- USHORT WrText(struct MyText *text)
- {
- wert=sizeof(struct MyText)-sizeof(struct IntuiText);
- while(text)
- {
- if(write=Write(Datei,text,wert) != wert) return(1);
- text=text->NextText;
- }
- return(0);
- }
- USHORT WrImage(struct MyImage *image)
- {
- wert=sizeof(struct MyImage)-sizeof(struct Image);
- if(write=Write(Datei,image,wert) != wert) return(1);
- if(image->ImageData)
- {
- if(write=Write(Datei,image->ImageData,image->Size)
- != image->Size) return(1);
- }
- return(0);
- }
- USHORT WrGadget(struct MyGadget *gadget)
- {
- while(gadget)
- {
- wert=sizeof(struct MyGadget)-
- (sizeof(struct Gadget)+sizeof(struct StringInfo));
- if(write=Write(Datei,gadget,wert) != wert) return(1);
- if(WrBorder(gadget->GadgetBorder)) return(1);
- if(WrBorder(gadget->SelectBorder)) return(1);
- if(gadget->GadgetImage)
- {
- if(WrImage(gadget->GadgetImage)) return(1);
- }
- if(gadget->SelectImage)
- {
- if(WrImage(gadget->SelectImage)) return(1);
- }
- if(gadget->PropImage)
- {
- if(WrImage(gadget->PropImage)) return(1);
- }
- if(gadget->PSImage)
- {
- if(WrImage(gadget->PSImage)) return(1);
- }
- if(WrText(gadget->FirstText)) return(1);
- if(gadget->Buffer)
- {
- if(write=Write(Datei,gadget->Buffer,gadget->MaxChars) !=
- gadget->MaxChars) return(1);
- }
- gadget=gadget->NextGadget;
- }
- return(0);
- }
- USHORT WrBorder(struct MyBorder *border)
- {
- wert=sizeof(struct MyBorder)-sizeof(struct Border);
- while(border)
- {
- if(write=Write(Datei,border,wert) != wert) return(1);
- border=border->NextBorder;
- }
- return(0);
- }
- USHORT WrMenu()
- {
-
- while(actM)
- {
- wert=sizeof(struct MyMenu)-sizeof(struct Menu);
- if(write=Write(Datei,actM,wert) != wert) return(1);
- actI=actM->FirstItem;
- if(WrItem()) return(1);
- actM=actM->Next;
- }
- return(0);
- }
- USHORT WrItem()
- {
- while(actI)
- {
- helpJ=actI;
- if(WriteItem()) return(1);
- actS=actI->Sub;
- while(actS)
- {
- helpJ=actS;
- if(WriteItem()) return(1);
- actS=actS->Next;
- }
- actI=actI->Next;
- }
- return(0);
- }
- USHORT WriteItem()
- {
- wert=sizeof(struct MyItem)-sizeof(struct MenuItem);
- if(write=Write(Datei,helpJ,wert) != wert) return(1);
- if(WrText(helpJ->ItemText)) return(1);
- if(WrText(helpJ->SelectText)) return(1);
- if(helpJ->ItemImage)
- {
- if(WrImage(helpJ->ItemImage)) return(1);
- }
- if(helpJ->SelectImage)
- {
- if(WrImage(helpJ->SelectImage)) return(1);
- }
- return(0);
- }
- VOID LoadWin()
- {
- firstW=NULL;
- lastW=NULL;
- awin=(struct MyWindow *)1L;
- while(awin)
- {
- ReadWin();
- awin=awin->NextWindow;
- }
- awin=lastW;
- }
- USHORT LoadData(UBYTE LArt)
- {
- UBYTE Mo[1];
- USHORT ERR;
- Datei=NULL;
- if(suffix==0)
- {
- suffix=1;
- Change=0;
- }
- strcpy(LEER,"WM-DATEN laden !");
- if(LArt==1) strcpy(LEER,"WM-Window laden !");
- ERR=FileRequester(LEER,90);
- if(ERR > 1) return(2);
- if(ERR==1)
- {
- Error(0,1,1);
- return(2);
- }
- if(strlen(FileName) == 0) return(2);
- Work();
- if( FileName[strlen(FileName)-3] != ZCode[6][0] &&
- FileName[strlen(FileName)-2] != ZCode[6][1] &&
- FileName[strlen(FileName)-1] != ZCode[6][2] ) return(3);
- if(!(Datei=Open(FileName,MODE_OLDFILE))) return(1);
- if(read=Read(Datei,LEER,sizeof(IDENT)) != sizeof(IDENT)) return(1);
- if(strcmp(LEER,IDENT)) return(3);
- Read(Datei,Mo,sizeof(Mo));
- if(LArt==1 && (Mo[0] == '1' || Mo[0] == '2')) return(4);
- if(LArt==0) ClearAll();
- if(Mo[0]=='3' && LArt==1)
- {
- ReadWin();
- if(asc)
- {
- if(asc->FirstWindow == NULL)
- asc->FirstWindow=awin;
- }
- else
- {
- if(awin==firstW) noscW=firstW;
- }
- Read(Datei,Mo,sizeof(Mo));
- }
- if(LArt==0 && (Mo[0] == '1' || Mo[0] == '3'))
- {
- asc=NULL;
- LoadWin();
- noscW=firstW;
- Read(Datei,Mo,sizeof(Mo));
- }
- if(Mo[0]=='2' && LArt==0)
- {
- firstS=NULL;
- lastS=NULL;
- asc=(struct MyScreen *)1L;
- while(asc)
- {
- asc=(struct MyScreen *)
- AllocMem(sizeof(struct MyScreen),
- MEMF_CLEAR|MEMF_PUBLIC);
- Read(Datei,asc,sizeof(struct MyScreen));
- if(firstS==NULL) firstS=asc;
- else lastS->NextScreen=asc;
- asc->Parent=lastS;
- lastS=asc;
- if(asc->FirstWindow) LoadWin();
- asc->FirstWindow=firstW;
- asc=asc->NextScreen;
- }
- }
- Close(Datei);
- Datei=NULL;
- if(LArt==0) NewLoad();
- else
- {
- awin->win=NULL;
- awin->Screen=sc;
- SetNewWin(1);
- TestWok();
- }
- Ready();
- return(0);
- }
-
- VOID ReadWin()
- {
- awin=(struct MyWindow *)
- AllocMem(sizeof(struct MyWindow),
- MEMF_CLEAR|MEMF_PUBLIC);
- Read(Datei,awin,sizeof(struct MyWindow));
- if(firstW==NULL) firstW=awin;
- else lastW->NextWindow=awin;
- awin->Parent=lastW;
- awin->Wsc=asc;
- lastW=awin;
- if(awin->FirstText)
- {
- ReadText();
- awin->FirstText=firstT;
- }
- if(awin->FirstGadget)
- {
- ReadGadget();
- awin->FirstGadget=firstG;
- }
- if(awin->MenuStrip)
- {
- ReadMenu();
- awin->MenuStrip=firstM;
- MakeMenu();
- }
- if(awin->CheckMark)
- {
- ReadImage();
- awin->CheckMark=helpI;
- }
- if(awin->FirstRequest)
- {
- ReadRequest();
- awin->FirstRequest=areq;
- }
- }
- VOID ReadRequest()
- {
- areq=(struct MyRequest *)AllocMem(sizeof(struct MyRequest),
- MEMF_CLEAR|MEMF_PUBLIC);
- Read(Datei,areq,sizeof(struct MyRequest));
- if(areq->ReqBorder)
- {
- BType=2;
- firstGB=NULL;
- lastGB=NULL;
- ReadBorder();
- areq->ReqBorder=firstGB;
- }
- if(areq->ReqImage)
- {
- ReadImage();
- areq->ReqImage=helpI;
- }
- }
- VOID ReadText()
- {
- firstT=NULL;
- lastT=NULL;
- aText=(struct MyText *)1L;
- while(aText)
- {
- aText=(struct MyText *)
- AllocMem(sizeof(struct MyText),
- MEMF_CLEAR|MEMF_PUBLIC);
- Read(Datei,aText,sizeof(struct MyText)-sizeof(struct IntuiText));
- if(firstT==NULL) firstT=aText;
- else lastT->NextText=aText;
- aText->Parent=lastT;
- lastT=aText;
- aText=aText->NextText;
- }
- aText=lastT;
- }
- VOID ReadImage()
- {
- helpI=(struct MyImage *)AllocMem(sizeof(struct MyImage),
- MEMF_CLEAR|MEMF_PUBLIC);
- Read(Datei,helpI,sizeof(struct MyImage)-sizeof(struct Image));
- if(helpI->Size > 0)
- {
- helpI->ImageData=(USHORT*)AllocMem(helpI->Size+10,
- MEMF_CLEAR|MEMF_CHIP);
- Read(Datei,helpI->ImageData,helpI->Size);
- }
- MakeImage();
- }
- VOID ReadGadget()
- {
- firstG=NULL;
- lastG=NULL;
- agad=(struct MyGadget *)1L;
- while(agad)
- {
- agad=(struct MyGadget *)
- AllocMem(sizeof(struct MyGadget),
- MEMF_CLEAR|MEMF_PUBLIC);
- Read(Datei,agad,sizeof(struct MyGadget)-
- (sizeof(struct Gadget)+sizeof(struct StringInfo)));
- if(firstG==NULL) firstG=agad;
- else lastG->NextGadget=agad;
- agad->Parent=lastG;
- if(agad->GadgetBorder)
- {
- BType=0;
- firstGB=NULL;
- lastGB=NULL;
- ReadBorder();
- agad->GadgetBorder=firstGB;
- }
- if(agad->SelectBorder)
- {
- BType=1;
- firstSB=NULL;
- lastSB=NULL;
- ReadBorder();
- agad->SelectBorder=firstSB;
- }
- if(agad->GadgetImage)
- {
- ReadImage();
- agad->GadgetImage=helpI;
- }
- if(agad->SelectImage)
- {
- ReadImage();
- agad->SelectImage=helpI;
- }
- if(agad->PropImage)
- {
- ReadImage();
- agad->PropImage=helpI;
- }
- if(agad->PSImage)
- {
- ReadImage();
- agad->PSImage=helpI;
- }
- if(agad->FirstText)
- {
- ReadText();
- agad->FirstText=firstT;
- }
- if(agad->Buffer)
- {
- agad->Buffer=(UBYTE *)AllocMem(agad->MaxChars+1,
- MEMF_CLEAR|MEMF_PUBLIC);
- Read(Datei,agad->Buffer,agad->MaxChars);
- }
- lastG=agad;
- agad=agad->NextGadget;
- }
- TestGok();
- }
- VOID ReadBorder()
- {
- abor=(struct MyBorder *)1L;
- while(abor)
- {
- abor=(struct MyBorder *)
- AllocMem(sizeof(struct MyBorder),
- MEMF_CLEAR|MEMF_PUBLIC);
- Read(Datei,abor,sizeof(struct MyBorder)-sizeof(struct Border));
- if(BType==1)
- {
- if(firstSB==NULL) firstSB=abor;
- else lastSB->NextBorder=abor;
- abor->Parent=lastSB;
- lastSB=abor;
- }
- else
- {
- if(firstGB==NULL) firstGB=abor;
- else lastGB->NextBorder=abor;
- abor->Parent=lastGB;
- lastGB=abor;
- }
- abor=abor->NextBorder;
- }
- }
- VOID ReadMenu()
- {
- firstM=NULL;
- lastM=NULL;
- amenu=(struct MyMenu *)1L;
- while(amenu)
- {
- amenu=(struct MyMenu *)AllocMem(sizeof(struct MyMenu),
- MEMF_CLEAR|MEMF_PUBLIC);
- Read(Datei,amenu,sizeof(struct MyMenu)-sizeof(struct Menu));
- if(firstM==NULL) firstM=amenu;
- else lastM->Next=amenu;
- amenu->Parent=lastM;
- if(amenu->FirstItem)
- {
- ReadItem();
- amenu->FirstItem=firstI;
- }
- lastM=amenu;
- amenu=amenu->Next;
- }
- amenu=lastM;
- }
- VOID ReadItem()
- {
- firstI=NULL;
- lastI=NULL;
- aitem=(struct MyItem *)1L;
- while(aitem)
- {
- aitem=(struct MyItem *)AllocMem(sizeof(struct MyItem),
- MEMF_CLEAR|MEMF_PUBLIC);
- Read(Datei,aitem,sizeof(struct MyItem)-sizeof(struct MenuItem));
- if(firstI==NULL) firstI=aitem;
- else lastI->Next=aitem;
- aitem->Parent=lastI;
- if(aitem->ItemText)
- {
- ReadText();
- aitem->ItemText=firstT;
- }
- if(aitem->SelectText)
- {
- ReadText();
- aitem->SelectText=firstT;
- }
- if(aitem->ItemImage)
- {
- ReadImage();
- aitem->ItemImage=helpI;
- }
- if(aitem->SelectImage)
- {
- ReadImage();
- aitem->SelectImage=helpI;
- }
- if(aitem->Sub)
- {
- ReadSub();
- aitem->Sub=Sfirst;
- }
- lastI=aitem;
- aitem=aitem->Next;
- }
- aitem=lastI;
- }
- VOID ReadSub()
- {
- Sfirst=NULL;
- Slast=NULL;
- asub=(struct MyItem *)1L;
- while(asub)
- {
- asub=(struct MyItem *)AllocMem(sizeof(struct MyItem),
- MEMF_CLEAR|MEMF_PUBLIC);
- Read(Datei,asub,sizeof(struct MyItem)-sizeof(struct MenuItem));
- if(Sfirst==NULL) Sfirst=asub;
- else Slast->Next=asub;
- asub->Parent=Slast;
- if(asub->ItemText)
- {
- ReadText();
- asub->ItemText=firstT;
- }
- if(asub->SelectText)
- {
- ReadText();
- asub->SelectText=firstT;
- }
- if(asub->ItemImage)
- {
- ReadImage();
- asub->ItemImage=helpI;
- }
- if(asub->SelectImage)
- {
- ReadImage();
- asub->SelectImage=helpI;
- }
- Slast=asub;
- asub=asub->Next;
- }
- asub=Slast;
- }
- USHORT NewLoad()
- {
- Work();
- if(noscW)
- {
- sc=WMsc;
- OpenW(noscW);
- }
- if(firstS)
- {
- asc=firstS;
- lastS=firstS;
- while(asc)
- {
- if(!(asc->sc=(struct Screen*)NScreen())) return(1);
- sc=asc->sc;
- vp=&sc->ViewPort;
- LoadRGB4(vp,&asc->ColorMap[0],asc->Colors);
- if(asc->FirstWindow) OpenW(asc->FirstWindow);
- lastS=asc;
- asc=asc->NextScreen;
- }
- asc=lastS;
- TestSok();
- }
- ScreenToFront(sc);
- Ready();
- return(0);
- }
- VOID OpenW(struct MyWindow *w)
- {
- firstW=w;
- awin=firstW;
- while(awin)
- {
- awin->win=NULL;
- awin->Screen=sc;
- SetNewWin(1);
- lastW=awin;
- awin=awin->NextWindow;
- }
- awin=lastW;
- TestWok();
- }
- USHORT FileRequester(STRPTR *st,SHORT xpo)
- {
- USHORT quit=TRUE;
- TestDevice();
- d--;
- Disk[d].NextGadget=&PfeilUpGad;
- PDir.NextGadget=&Disk[0];
- FWindow.Screen=WMsc;
- if (!(Wwin = (struct Window *) OpenWindow(&FWindow)))
- return(1);
- Wrp = Wwin->RPort;
- WinBorder(Wwin);
- PrintIText(Wrp,&DText[5],0,0);
- text(Wrp,3,st,xpo,185);
- ScreenToFront(WMsc);
- out=0;
- SY=0;
- if(Change || First) SetWertF();
- else if(Change==0)
- {
- firstF=NULL;
- SetDir();
- ShowDir();
- }
- do
- {
- Wait(1L << Wwin->UserPort->mp_SigBit);
- while(Wmsg=(struct IntuiMessage*)GetMsg(Wwin->UserPort))
- {
- HolMsg(Wmsg);
- switch(class)
- {
- case MOUSEMOVE: SY=1;
- break;
- case GADGETDOWN:
- switch(Id)
- {
- case 30: SY=2;
- break;
- case 31: SY=3;
- break;
- case 32: SY=1;
- break;
- }
- break;
- case GADGETUP:
- /* FileGadgets */
- switch(Id)
- {
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10: helpF=firstF;
- if(helpF)
- {
- for(i=0; i<Dnr; i++)
- helpF=helpF->Next;
- }
- i=1;
- ok=1;
- while(ok)
- {
- if(i==Id || helpF==NULL)
- {
- ok=0;
- if(helpF)
- {
- if(helpF->Color == 3)
- {
- if(Pfad[strlen(Pfad)-1] != 58)
- {
- strcat(Pfad,"/");
- }
- strcat(Pfad,helpF->Name);
- ShowDir();
- }
- else
- {
- strcpy(Fname,helpF->Name);
- }
- RefreshGList(&PfadName,Wwin,NULL,2);
- }
- }
- else
- {
- helpF=helpF->Next;
- i++;
- }
- }
- break;
- /* Drives */
- case 11:
- case 12:
- case 13:
- case 14:
- case 15:
- case 16:
- case 17:
- case 18: strcpy(PFADUNDO,Pfad);
- strcpy(Pfad,Drives1[Id-11]);
- ShowDir();
- break;
- /* O K */
- case 19:
- /* Filename */
- case 24: if(strlen(Fname))
- {
- strcpy(FileName,Pfad);
- if(FileName[strlen(FileName)-1] != ':')
- strcat(FileName,"/");
- strcat(FileName,Fname);
- }
- else out=2;
- quit=FALSE;
- break;
- /* EXIT */
- case 0: out=2;
- quit=FALSE;
- break;
- /* Pfadname */
- case 23: if(strcmp(Pfad,PFADUNDO))
- ShowDir();
- break;
- break;
- /* ParentDir */
- case 25: if(Pfad[strlen(Pfad)-1] == ':') break;
- Back();
- ShowDir();
- break;
- } /*switch Id */
- } /* switch class */
- if(SY==1)
- {
- i=Dnr;
- if(Anzahl > 9)
- {
- Dnr=((ReglerInfo.VertPot+1)*(Anzahl-9)/65535);
- if(Dnr != i) SetDir();
- }
- SY=0;
- }
- if(SY > 1)
- {
- while(class != GADGETUP)
- {
- if(SY==2)
- {
- if(Dnr)
- {
- Dnr--;
- SetWertF();
- }
- }
- if(SY==3)
- {
- if((Dnr+9)<Anzahl)
- {
- Dnr++;
- SetWertF();
- }
- }
- GetMessage(Wwin);
- }
- SY=0;
- }
- } /* while */
- } while(quit); /* do */
- CloseWindow(Wwin);
- ScreenToFront(sc);
- return(out);
- }
-
- VOID Back()
- {
- for(i=strlen(Pfad);
- Pfad[i-1]!=':' && Pfad[i-1]!='/';
- i--);
- Pfad[i]=0;
- if(Pfad[--i]=='/') Pfad[i]=0;
- }
-
- /* Text auf Bildschirm schreiben */
-
- VOID text(struct RastPort *rast,UBYTE col,UBYTE *s,SHORT x,SHORT y)
- {
- SetPen(rast,col,JAM1);
- Move(rast,x,y);
- Text(rast,s,strlen(s));
- }
-
- VOID TestDevice()
- {
- d=0;
- Fertig=FALSE;
- root=(struct RootNode *)DOSBase->dl_Root;
- info=(struct DosInfo *)BADDR(root->rn_Info);
- devinfo=(struct DeviceNode *)BADDR(info->di_DevInfo);
- while(devinfo && Fertig==FALSE)
- {
- next=(struct DeviceNode *)BADDR(devinfo->dn_Next);
- if(devinfo->dn_Type==DLT_DEVICE && devinfo->dn_Task)
- {
- zeiger=(char *)BADDR(devinfo->dn_Name);
- wert=*zeiger++;
- if(wert>10) wert=10;
- strncpy(Dname,zeiger,wert);
- Dname[wert]=0;
- if(strlen(Dname)==3)
- {
- strcpy(Drives1[d],Dname);
- strcat(Drives1[d],":");
- GText[d].FrontPen=1;
- GText[d].BackPen=0;
- GText[d].DrawMode=JAM1;
- GText[d].LeftEdge=10;
- GText[d].TopEdge=3;
- GText[d].ITextFont=NULL;
- GText[d].IText=Drives1[d];
- GText[d].NextText=NULL;
- Disk[d].NextGadget=&Disk[d+1];
- Disk[d].LeftEdge=20;
- Disk[d].TopEdge=10+(d*18);
- Disk[d].Width=48;
- Disk[d].Height=12;
- Disk[d].Activation=RELVERIFY;
- Disk[d].GadgetType=BOOLGADGET;
- Disk[d].GadgetRender=(APTR)&Bool;
- Disk[d].SelectRender=NULL;
- Disk[d].GadgetText=>ext[d];
- Disk[d].MutualExclude=NULL;
- Disk[d].SpecialInfo=NULL;
- Disk[d].GadgetID=d+11;
- Disk[d].UserData=NULL;
- Disk[d].Flags=NULL;
- if(d++ == 8) Fertig=TRUE;
- }
- }
- devinfo=next;
- }
- }
- USHORT ReadDir()
- {
- struct direntry *neu;
- if(!(Eintrag=(struct FileInfoBlock *)
- AllocMem(sizeof(struct FileInfoBlock),
- MEMF_PUBLIC|MEMF_CLEAR))) return(1);
- if(!(dir=Lock(Pfad,ACCESS_READ))) return(2);
- if(!Examine(dir,Eintrag)) return(2);
- if(Eintrag->fib_DirEntryType < 0) return(11);
- FreeFiles();
- Anzahl=0;
- firstD=NULL;
- Dact=NULL;
- while(ExNext(dir,Eintrag))
- {
- if(Eintrag->fib_DirEntryType>0) /* Dir */
- {
- neu=(struct direntry*)
- AllocMem(sizeof(struct direntry),
- MEMF_CLEAR|MEMF_PUBLIC);
- neu->Next=NULL;
- neu->Parent=NULL;
- strcpy(neu->Name,Eintrag->fib_FileName);
- neu->Color=3;
- if(firstD==NULL)
- {
- firstD=neu;
- Dact=firstD;
- }
- else Sortier(neu,1);
- Anzahl++;
- }
- else /* Kein Directory, File */
- {
- i=1;
- if(suffix)
- {
- if(Eintrag->fib_FileName[strlen(Eintrag->fib_FileName)-3] == '.' &&
- Eintrag->fib_FileName[strlen(Eintrag->fib_FileName)-2] == 'w' &&
- Eintrag->fib_FileName[strlen(Eintrag->fib_FileName)-1] == 'm' ) i=1;
- else i=0;
- }
- if(i)
- {
- neu=(struct direntry*)
- AllocMem(sizeof(struct direntry),
- MEMF_CLEAR|MEMF_PUBLIC);
- neu->Next=NULL;
- neu->Parent=NULL;
- neu->Color=1;
- strcpy(neu->Name,Eintrag->fib_FileName);
- if(firstF==NULL) firstF=neu;
- else Sortier(neu,0);
- Anzahl++;
- }
- }
- }
- if(Anzahl) Anzahl--;
- if(IoErr() != ERROR_NO_MORE_ENTRIES) return(2);
- if(Dact)
- {
- Dact->Next=firstF;
- if(firstF) firstF->Parent=Dact;
- firstF=firstD;
- First=0;
- }
- Change=1;
- Dnr=0;
- SetWertF();
- return(0);
- }
- VOID Sortier(struct direntry *f,UBYTE mode)
- {
- UBYTE help1[80],help2[80];
- ok=FALSE;
- helpF=firstF;
- if(mode) helpF=firstD;
- while(ok==FALSE)
- {
- Umlaut(helpF->Name,help1);
- Umlaut(f->Name,help2);
- if(strcmp(help1,help2) > 0)
- {
- if(mode)
- {
- if(helpF==firstD) firstD=f;
- }
- else
- {
- if(helpF==firstF) firstF=f;
- }
- if(helpF->Next)
- {
- f->Next=helpF;
- f->Parent=helpF->Parent;
- helpF->Parent->Next=f;
- helpF->Parent=f;
- }
- else
- {
- if(mode) Dact=helpF;
- f->Next=helpF;
- f->Parent=helpF->Parent;
- helpF->Parent->Next=f;
- helpF->Parent=f;
- }
- ok=TRUE;
- }
- else
- {
- if(helpF->Next) helpF=helpF->Next;
- else
- {
- if(mode) Dact=f;
- helpF->Next=f;
- f->Parent=helpF;
- ok=TRUE;
- }
- }
- }
- }
-
- /* Umlaute eines Eintrags zerlegen (ä wird ae) */
-
- VOID Umlaut(UBYTE *s,UBYTE *t)
- {
- while(*s != '\0')
- {
- if(*s == 'ä' || *s == 'Ä')
- {
- *t='a';
- t++;
- *t='e';
- }
- else if(*s == 'ö' || *s == 'Ö')
- {
- *t='o';
- t++;
- *t='e';
- }
- else if(*s == 'ü' || *s == 'Ü')
- {
- *t='u';
- t++;
- *t='e';
- }
- else if(*s == 'ß')
- {
- *t='s';
- t++;
- *t='s';
- }
- else *t=*s|32;
- s++;
- t++;
- }
- *t='\0';
- }
-
- VOID SetDir()
- {
- helpF=firstF;
- for(i=0; i<Dnr; i++) helpF=helpF->Next;
- SetDrMd(Wrp,JAM2);
- SetBPen(Wrp,2);
- for(i=0; i<10; i++)
- {
- LEER[0]=0;
- Move(Wrp,109,26+(i*8));
- if(helpF)
- {
- SetAPen(Wrp,helpF->Color);
- strncpy(LEER,helpF->Name,24);
- helpF=helpF->Next;
- }
- for(j=strlen(LEER); j<24; j++)
- strcat(LEER," ");
- Text(Wrp,LEER,24);
- }
- }
-
- VOID SetWertF()
- {
- SetDir();
- SetWert(Dnr,Anzahl,Wwin,&Regler,&ReglerInfo);
- }
- VOID ShowDir()
- {
- SetPointer(Wwin,Wecker,20,15,0,0);
- err=ReadDir();
- if(Eintrag) FreeMem(Eintrag,sizeof(struct FileInfoBlock));
- if(dir) UnLock(dir);
- ClearPointer(Wwin);
- if(err) Error(err-1,0,1);
- if(err==11) Back();
- RefreshGList(&PfadName,Wwin,NULL,1);
- }
- VOID FreeFiles()
- {
- while(firstF)
- {
- helpF=firstF->Next;
- FreeMem(firstF,sizeof(struct direntry));
- firstF=helpF;
- }
- }
-